package servidor;
import java.net.ServerSocket;
import java.util.ArrayList;

import utilidad.SocketManager;

public final class Servidor
{
	public static ArrayList<Thread>hilosTotales= new ArrayList<Thread>();
	public static ArrayList<Runnable>runnablesTotales= new ArrayList<Runnable>();
	public static VentanaServidor vS;
	//Por defecto hay 5 conexiones m�ximas
	public static int conexinesMaximas = 5;
	
	public static void main(String argv[]) throws Exception
	{
		int contadorConexiones=0;
		// Set the port number.
		int port = 3001;//(new Integer(argv[0])).intValue();

		@SuppressWarnings("resource")
		ServerSocket wellcomeSocket = new ServerSocket(port);
		vS= new VentanaServidor();
		while (true)
		{
			//Aceptar la nueva petici�n y crear el SocketManager para gestionar el Socket obtenido
			SocketManager sM = new SocketManager(wellcomeSocket.accept());
			if(contadorConexiones<=conexinesMaximas)
			{
				//Crear un objeto  para gestionar la petici�n
				//HttpRequest request = new HttpRequest(sM);
				
				GestorPeticion request= new GestorPeticion(sM);
				runnablesTotales.add(request);
				//Crear un Thread para el objeto HttpRequest
				Thread tH = new Thread(request);
				hilosTotales.add(tH);
				//Arrancar el Thread
				tH.start();
				contadorConexiones++;
			}
			else
			{
				sM.CerrarStreams();
				sM.CerrarSocket();
			}
			
		}
	}
}
